#==========================================================================
#
#   Copyright NumFOCUS
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#          http://www.apache.org/licenses/LICENSE-2.0.txt
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.
#
#==========================================================================*/

#
# WARNING: DO NOT EDIT THIS FILE!
# THIS FILE IS AUTOMATICALLY GENERATED BY THE SIMPLEITK BUILD PROCESS.
# Please look at TclImageFilterTestTemplate.tcl.in to make changes.
#


# This is Tcl code to test ${name}

$(if number_of_inputs then
    OUT=[[set inputs ${number_of_inputs}]]
  else
    OUT=[[set inputs 1]]
  end)

if { [llength [set argv]] < ( [set inputs] + 1 ) } {
  puts "Usage: ${name} tag <input(s)> output"
  exit 1
}
set tag [lindex [set argv] 0]
set ValidTags ""
ImageFileWriter writer
${name} filter

$(if #tests == 0 then
    OUT=[[puts "No tests defined!"; exit 1;]]
  end)

$(foreach tests
lappend ValidTags "${tag}"
if { [set tag] == "${tag}" } {

$(when settings
$(foreach settings
$(if parameter == "SeedList" and tcl_value then
OUT=[[  filter ClearSeeds
$(for i=1,#tcl_value do OUT=OUT .. "  filter AddSeed [list ".. tcl_value[i] .. "]\n" end)]]
elseif parameter == "SeedList" then
OUT=[[  filter ClearSeeds
$(for i=1,#value do OUT=OUT .. "  filter AddSeed [list ".. value[i] .. "]\n" end)]]
elseif parameter == "TrialPoints" and tcl_value then
OUT=[[  filter ClearTrialPoints
$(for i=1,#tcl_value do OUT=OUT .. "  filter AddTrialPoint [list ".. tcl_value[i] .. "]\n" end)]]
elseif parameter == "TrialPoints" then
OUT=[[  filter ClearTrialPoints
$(for i=1,#value do OUT=OUT .. "  filter AddTrialPoint [list ".. value[i] .. "]\n" end)]]
elseif point_vec and point_vec==1 then
OUT=[[  filter Clear${parameter}
]]
  for i=1,#value do
    OUT=OUT .. "   filter Add${parameter:gsub('s([0-9]?)$','%1')} [list ".. tcl_value[i] .. "]\n"
  end
elseif tcl_value then
OUT=[[
  filter Set${parameter} ${tcl_value}]]
elseif dim_vec and dim_vec==1 then
OUT=[[
  filter Set${parameter} [list $(for i=1,#value do OUT=OUT..value[i]..' ' end)] ]]
else
OUT=[[
  filter Set${parameter} ${value}]]
end)
))

  set inputs {}

  for {set i 1} { $$i < $$argc-1 } {incr i } {
      puts "reading [lindex $$argv $$i]"
      lappend inputs [ ReadImage [lindex $$argv $$i] ]
  }

$(if inputA_cast then
OUT=[[
      set inputs [lreplace $$inputs 0 0 [ Cast [lindex $$inputs 0] [set ${inputA_cast}] ] ]
     ]]
end)
$(if inputB_cast then
OUT=[[
      set inputs [lreplace $$inputs 1 1 [ Cast [lindex $$inputs 1] [set ${inputB_cast}] ] ]
     ]]
end)

  set output [eval filter Execute $$inputs ]
$(if not no_return_image then
OUT=[[
  set labelIDs [ list [set sitkLabelUInt8] [set sitkLabelUInt16] [set sitkLabelUInt32] [set sitkLabelUInt64] ]
  if { [lsearch $labelIDs [$$output GetPixelIDValue] ] >= 0 } {
      set output [ LabelMapToLabel $$output ]
  }

  writer SetFileName [lindex $$argv end]
  writer Execute $$output
]]
end)
  exit
}
)

puts stderr "Tag [set tag] was not found, must be one of [set ValidTags]"
exit 1
